﻿package com.eitb.programas.menu{
	import flash.net.*;
	import flash.events.*;
	import flash.display.*;
	import com.eitb.factorias.*;
	import com.eitb.programas.*;
	import com.eitb.plantillas.*;
	import com.eitb.literales.*;
	import com.eitb.rutas.*;

	public class Main extends Sprite implements IControladorPrograma {
		public static  const PORTADA:String = "Portada";
		public static  const MENU:String = "Menu";

		
//		private var infografia:String="240320101259";
		private var infografia:String="110820091030";
		private var idiomaRetrived:String="es";
//		private var idiomaRetrived:String=loaderInfo.parameters.idioma;
//		private var infografia:String=loaderInfo.parameters.infografia;


		private var vPortada:IVistaPlantilla;
		private var vMenu:IVistaMenu;
		private var xmlData:XML;
		private var idioma:int;

		public function Main():void {
			switch (this.idiomaRetrived) {
				case "en" :
					this.idioma = Literales.EN;
					break;
				case "es" :
					this.idioma = Literales.ES;
					break;
				case "eu" :
					this.idioma = Literales.EU;
					break;
				case "fr" :
					this.idioma = Literales.FR;
					break;
				default :
					this.idioma = Literales.EN;
			}
			initXml();
		}
		private function initPortada(tPortada, imagenes, textos):void {
			var factoriaPlantillas:FactoriaPlantillas;
			var mPortada:ModeloPortada;
			var dPortada:*;
			factoriaPlantillas = new FactoriaPlantillas();
//			mPortada = factoriaPlantillas.getControladorElemento(tPortada);
			mPortada = new ModeloPortada();
			dPortada = factoriaPlantillas.getVistaElemento(tPortada);
			this.addChild(dPortada);

			dPortada.initControladorPrograma(this);
			dPortada.initControladorPlantilla(mPortada);
			dPortada.initControladorPlantillaPortada(mPortada);
			dPortada.initControladorCargador(mPortada);
			mPortada.initVistaPlantilla(dPortada);
			mPortada.initVistaPlantillaPortada(dPortada);
			mPortada.initVistaPlantillaMultimedia(dPortada);
			mPortada.initVistaCargador(dPortada);

			dPortada.initEvents();
			mPortada.initIdioma(this.idioma);
			mPortada.initEnlaceUrl(null);
			mPortada.initImagenes(imagenes);
			mPortada.loadImagenes();
			mPortada.initTextos(textos);
			mPortada.initLiteralesCargador(new CargadorLiterales(this.idioma));

			this.vPortada = dPortada;
		}
		private function initMenu():void {
			var mMenu:ModeloMenu= new ModeloMenu();
			var dMenu:DialogoMenu = new DialogoMenu();
			addChild(dMenu);

			dMenu.initControladorMenu(mMenu);
			mMenu.initVistaMenu(dMenu);

			mMenu.initIdioma(this.idioma);
			mMenu.initLaminas(this.xmlData..lamina);

			this.vMenu = dMenu;
		}
		// PROGRAMA
		public function saltar(desde:String, donde:String):void {
			if (Main.PORTADA == desde && Main.MENU == donde) {
				this.initMenu();
				this.vPortada = null;
			}
		}
		// PROGRAMA
		// INIT XML
		private function initXml() {
			var loader:URLLoader;
			loader = new URLLoader();
			this.configureListeners(loader);
			try {
				loader.load(new Rutas().getRutaXml(this.infografia, this.idiomaRetrived));
			} catch (error:Error) {
				trace("Unable to load requested document.");
			}
		}
		private function completeHandler(event:Event):void {
			var loader:URLLoader = URLLoader(event.target);
			var _xml:XML = new XML(loader.data);
			_xml.ignoreWhite = true;
			this.xmlData = _xml;
			initPortada(_xml.portada.tipo, _xml.portada.imagenes, _xml.portada.textos);
		}
		private function configureListeners(dispatcher:IEventDispatcher):void {
			dispatcher.addEventListener(Event.COMPLETE, completeHandler);
		}

	}
}